// 编写一个方法 处理时间 格式化为几小时前、几天前、几月前、几年之前， 大于7天显示具体日期
export function formatDate(dateStr) {
    let dateObj = typeof dateStr === 'object' ? dateStr : new Date(dateStr);
    let time = dateObj.getTime();
    let now = Date.now();
    let space = now - time;
    let str = '';
    // 大于7天显示具体日期
    switch (true) {
        case space < 60000:
            str = 'just now';
            break;
        case space < 1000 * 3600:
            str = Math.floor(space / 60000) + 'minutes ago';
            break;
        case space < 1000 * 3600 * 24:
            str = Math.floor(space / (1000 * 3600)) + 'hours ago';
            break;
        case space < 1000 * 3600 * 24 * 100:
            str = Math.floor(space / (1000 * 3600 * 24)) + 'days ago';
            break
        default:
            str = dateObj.getFullYear() + '/' + (dateObj.getMonth() + 1) + '/' + dateObj.getDate();
    }
    return str;
}

// 处理时间为 年月日 时分秒 支持传入格式化单位
export function formatTime(dateStr, fmt = 'YYYY-MM-DD HH:mm:ss') {
    let dateObj = typeof dateStr === 'object' ? dateStr : new Date(dateStr);
    let o = {
        'M+': dateObj.getMonth() + 1,
        'D+': dateObj.getDate(),
        'H+': dateObj.getHours(),
        'm+': dateObj.getMinutes(),
        's+': dateObj.getSeconds()
    };
    if (/(Y+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (dateObj.getFullYear() + '').substr(4 - RegExp.$1.length));
    }
    for (let k in o) {
        if (new RegExp('(' + k + ')').test(fmt)) {
            fmt = fmt.replace(
                RegExp.$1,
                RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)
            );
        }
    }
    return fmt;
}

// 实时计算两个时间的差值 时分秒
export function timeDiff(startTime, endTime) {
    let start = new Date(startTime);
    let end = new Date(endTime);
    let diff = end.getTime() - start.getTime();
    let h = Math.floor(diff / (1000 * 60 * 60));
    let m = Math.floor((diff / (1000 * 60)) % 60);
    let s = Math.floor((diff / 1000) % 60);
    return `${h}:${m}:${s}`;
}